home *** CD-ROM | disk | FTP | other *** search
- //
- // MiscClipTextFieldInspector.m -- IB inspector of MiscClipTextField(Cell)
- // Written and Copyright (c) 1995 by Balazs Pataki.
- // Version 1.0. All rights reserved.
- //
- // This notice may not be removed from this source code.
- //
- // This object is included in the MiscKit by permission from the author
- // and its use is governed by the MiscKit license, found in the file
- // "LICENSE.rtf" in the MiscKit distribution. Please refer to that file
- // for a list of all applicable permissions and restrictions.
- //
-
- // Most of the code in this inspector is borrowed form Mike Ferris's
- // MORegexTextCellInspector of MOKit
- // Mike Ferris, Copyright 1993, all rights reserved.
-
- #import "MiscClipTextFieldInspector.h"
- #import <misckit/MiscClipTextFieldCell.h>
- #import <misckit/MiscClipTextField.h>
- #import <misckit/MiscPathField.h>
- #import <objc/objc-runtime.h>
-
- #define CLASS_VERSION 0
- #define CLASS_NAME "MiscClipTextFieldInspector"
-
-
- #define BG_NONE_TAG 0
- #define BG_BLACK_TAG 1
- #define BG_DKGRAY_TAG 2
- #define BG_LTGRAY_TAG 3
- #define BG_WHITE_TAG 4
-
- #define TG_BLACK_TAG 0
- #define TG_DKGRAY_TAG 1
- #define TG_LTGRAY_TAG 2
- #define TG_WHITE_TAG 3
-
- #define ALIGN_LEFT_TAG 0
- #define ALIGN_CENTER_TAG 1
- #define ALIGN_RIGHT_TAG 2
-
- #define BORDER_NONE_TAG 0
- #define BORDER_LINE_TAG 1
- #define BORDER_BEZEL_TAG 2
-
- #define LEFT_TAG 0
- #define RIGHT_TAG 1
-
-
- #define NIB_TYPE "nib"
- #define NIB_NAME "MiscClipTextFieldInspector"
-
-
- @implementation MiscClipTextFieldInspector
-
- + initialize
- // Set the version.
- {
- if (self == objc_lookUpClass(CLASS_NAME)) {
- [self setVersion:CLASS_VERSION];
- }
- return self;
- }
-
- - init
- // Load our nib file.
- {
- char buf[MAXPATHLEN+1];
- id bundle;
-
- [super init];
-
- // load our nib file.
- bundle = [NXBundle bundleForClass:[self class]];
- [bundle getPath:buf forResource:NIB_NAME ofType:NIB_TYPE];
- [NXApp loadNibFile:buf owner:self withNames:NO fromZone:[self zone]];
-
- return self;
- }
-
- - ok:sender
- // set the text field-ish stuff and the allowEmptyString attribute.
- // The patternButtonAction takes care of the regex stuff. The
- // optionCheckboxAction takes care of editable, selectable, scrollable.
- {
- int bgTag = [backgroundGrayMatrix selectedTag];
- int tgTag = [textGrayMatrix selectedTag];
- int alTag = [alignmentMatrix selectedTag];
- int boTag = [borderMatrix selectedTag];
- int clTag = [clipOnMatrix selectedTag];
-
- const char *stringVal=NULL;
-
- if (bgTag == BG_NONE_TAG) {
- [object setBackgroundGray:-1.0];
- } else if (bgTag == BG_BLACK_TAG) {
- [object setBackgroundGray:NX_BLACK];
- } else if (bgTag == BG_DKGRAY_TAG) {
- [object setBackgroundGray:NX_DKGRAY];
- } else if (bgTag == BG_LTGRAY_TAG) {
- [object setBackgroundGray:NX_LTGRAY];
- } else {
- [object setBackgroundGray:NX_WHITE];
- }
- if (tgTag == TG_BLACK_TAG) {
- [object setTextGray:NX_BLACK];
- } else if (tgTag == TG_DKGRAY_TAG) {
- [object setTextGray:NX_DKGRAY];
- } else if (tgTag == TG_LTGRAY_TAG) {
- [object setTextGray:NX_LTGRAY];
- } else {
- [object setTextGray:NX_WHITE];
- }
- if (alTag == ALIGN_LEFT_TAG) {
- [object setAlignment:NX_LEFTALIGNED];
- } else if (alTag == ALIGN_CENTER_TAG) {
- [object setAlignment:NX_CENTERED];
- } else {
- [object setAlignment:NX_RIGHTALIGNED];
- }
- if (boTag == BORDER_NONE_TAG) {
- [object setBordered:NO];
- [object setBezeled:NO];
- } else if (boTag == BORDER_LINE_TAG) {
- [object setBordered:YES];
- } else {
- [object setBezeled:YES];
- }
-
- [object setTag:[tagForm intValueAt:0]];
-
- // My settings
- if (clTag == LEFT_TAG)
- [object setClipOnRight:NO];
- else
- [object setClipOnRight:YES];
-
- if (stringVal=[clipperStringField stringValue])
- [object setClipperString:stringVal];
- //else
- // [object setClipperString:"..."];
- [object setClipDelimiters:[clipDelimitersField stringValue]];
-
- return [super ok:sender];
- }
-
- - revert:sender
- // fill in the inspector with the attributes of "object"
- {
- float bg = [object backgroundGray], tg = [object textGray];
- int alignment = [object alignment];
- BOOL isBordered = [object isBordered], isBezeled = [object isBezeled];
-
- if (bg < 0) {
- [backgroundGrayMatrix selectCellAt:0:BG_NONE_TAG];
- } else if ((bg >= 0) && (bg < .2)) {
- [backgroundGrayMatrix selectCellAt:0:BG_BLACK_TAG];
- } else if ((bg >= .2) && (bg < .45)) {
- [backgroundGrayMatrix selectCellAt:0:BG_DKGRAY_TAG];
- } else if ((bg >= .45) && (bg < .8)) {
- [backgroundGrayMatrix selectCellAt:0:BG_LTGRAY_TAG];
- } else if (bg >= .8) {
- [backgroundGrayMatrix selectCellAt:0:BG_WHITE_TAG];
- }
- [backgroundGrayMatrix display];
- if (tg < .2) {
- [textGrayMatrix selectCellAt:0:TG_BLACK_TAG];
- } else if ((tg >= .2) && (tg < .45)) {
- [textGrayMatrix selectCellAt:0:TG_DKGRAY_TAG];
- } else if ((tg >= .45) && (tg < .8)) {
- [textGrayMatrix selectCellAt:0:TG_LTGRAY_TAG];
- } else if (tg >= .8) {
- [textGrayMatrix selectCellAt:0:TG_WHITE_TAG];
- }
- [textGrayMatrix display];
- if (alignment == NX_LEFTALIGNED) {
- [alignmentMatrix selectCellAt:0:ALIGN_LEFT_TAG];
- } else if (alignment == NX_CENTERED) {
- [alignmentMatrix selectCellAt:0:ALIGN_CENTER_TAG];
- } else {
- [alignmentMatrix selectCellAt:0:ALIGN_RIGHT_TAG];
- }
- [alignmentMatrix display];
- if (isBezeled) {
- [borderMatrix selectCellAt:0:BORDER_BEZEL_TAG];
- } else if (isBordered) {
- [borderMatrix selectCellAt:0:BORDER_LINE_TAG];
- } else {
- [borderMatrix selectCellAt:0:BORDER_NONE_TAG];
- }
-
- [tagForm setIntValue:[object tag] at:0];
-
- // My settings
- if ([object doesClipOnRight])
- [clipOnMatrix selectCellWithTag:RIGHT_TAG];
- else
- [clipOnMatrix selectCellWithTag:LEFT_TAG];
-
- [clipDelimitersField setStringValue:[[object delimiters] stringValue]];
- [clipperStringField setStringValue:[[object clipper] stringValue]];
-
- return [super revert:sender];
- }
-
- - (BOOL)wantsButtons
- // Our inspector does not have OK or Revert buttons.
- {
- return NO;
- }
-
-
- @end